package C.栈;

import java.util.Stack;

public class _1544_整理字符串 {

    public String makeGood(String s) {
        Stack<Character> stack = new Stack<>();
        StringBuffer newStr = new StringBuffer();
        int len =0;
        for (int i=0;i<s.length();i++){
            if (stack.isEmpty()){
                stack.push(s.charAt(i));
                newStr.append(s.charAt(i));
              //  len++;
            }else {
                if (Math.abs(stack.peek() - s.charAt(i)) == 32){
                    stack.pop();
                    newStr.deleteCharAt(newStr.length()-1);

                }else {
                    stack.push(s.charAt(i));
                    newStr.append(s.charAt(i));
                  //  len++;
                }
            }
        }
        return  newStr.toString();



    }

    /**
     * 优化 直接就用个stringBuffer===相当于借助栈的思维
     * @param s
     * @return
     */
    public String makeGood1(String s) {
        /**
         * 想法2 用字符串指针 但是删除之后的后一个要和前一个匹配
         */
        int p=0;
        int q=1;
        String newStr = "";
        while (q < s.length()){
            if (s.charAt(q)==s.charAt(p)+32 || s.charAt(q)==s.charAt(p)-32){
                if (p ==0 && q==s.length()-1){
                    return null;
                }else if (q ==s.length()-1){
                    return s.substring(0,p);
                }else{
                    //newStr += s.charAt(p);
                    p=q+1;
                    q = p+1;
                    continue;

                }

            }else {
                newStr+= s.charAt(p);
                p=q;
                q+=1;
            }

        }
        //q=s.length()弹出
        return newStr;


    }
}
